package com.personalink.reasoning.processor;

import com.personalink.common.dto.ChatRequest;
import com.personalink.common.dto.ChatResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 人格处理器接口
 */
public interface PersonaProcessor {
    
    /**
     * 处理聊天请求
     * 
     * @param request 聊天请求
     * @return 聊天响应
     */
    Mono<ChatResponse> processRequest(ChatRequest request);
    
    /**
     * 流式处理聊天请求
     * 
     * @param request 聊天请求
     * @return 流式聊天响应
     */
    Flux<ChatResponse> processRequestStream(ChatRequest request);
    
    /**
     * 获取人格ID
     * 
     * @return 人格ID
     */
    String getPersonaId();
    
    /**
     * 获取人格名称
     * 
     * @return 人格名称
     */
    String getPersonaName();
    
    /**
     * 检查是否支持指定的输入类型
     * 
     * @param inputType 输入类型
     * @return 是否支持
     */
    boolean supportsInputType(String inputType);
    
    /**
     * 预处理请求
     * 
     * @param request 原始请求
     * @return 预处理后的请求
     */
    default Mono<ChatRequest> preprocessRequest(ChatRequest request) {
        return Mono.just(request);
    }
    
    /**
     * 后处理响应
     * 
     * @param response 原始响应
     * @return 后处理后的响应
     */
    default Mono<ChatResponse> postprocessResponse(ChatResponse response) {
        return Mono.just(response);
    }
}